package com.spzx.product.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.spzx.product.domain.ProductUnit;
import com.spzx.product.mapper.ProductUnitMapper;
import com.spzx.product.service.IProductUnitService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.Arrays;

/**
 * 商品单位Service业务层处理
 */
@Service
public class ProductUnitServiceImpl extends ServiceImpl<ProductUnitMapper,ProductUnit> implements IProductUnitService{

    @Autowired
    private ProductUnitMapper productUnitMapper;

    @Override
    public IPage<ProductUnit> findPage(Page<ProductUnit> pageParam, ProductUnit productUnit) {
        LambdaQueryWrapper<ProductUnit> queryWrapper = new LambdaQueryWrapper<>(); //构造器不要传实体对象，否则会增加属性的相等查询。

        queryWrapper.like(StringUtils.hasText(productUnit.getName()),ProductUnit::getName,productUnit.getName());

        return productUnitMapper.selectPage(pageParam,queryWrapper); // MyBatis Plus BaseMapper接口已经提供方法声明。无需自己定义方法，无需自己实现SQL开发。自动增加del_flag='0'条件
        //return productUnitMapper.findPage(pageParam,productUnit); //自定义dao接口，自己写SQL实现带分页查询
    }

    @Override
    public ProductUnit selectProductUnitById(Long id) {
        //return productUnitMapper.selectById(id); // MyBatis Plus BaseMapper接口已经提供方法声明。无需自己定义方法，无需自己实现SQL开发。自动增加del_flag='0'条件
        return this.getById(id); // 不推荐。业务方法都是需要事务支持。避免事务传播行为(Propagation 七种)。以后，所有业务层都是通过dao来操作数据。
    }

    @Override
    public int insertProductUnit(ProductUnit productUnit) {
        return productUnitMapper.insert(productUnit);
    }

    @Override
    public int updateProductUnit(ProductUnit productUnit) {
        return productUnitMapper.updateById(productUnit);
    }

    @Override
    public int deleteProductUnitByIds(Long[] ids) {
        return productUnitMapper.deleteBatchIds(Arrays.asList(ids));
    }
}